 /* 
 * Copyright 2013 Dominik Korittki, Steffen Gruschka

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/

package entity;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import org.hibernate.validator.constraints.Length;

/**
 * Repräsentation eines Systemnutzers.
 * Diese Nutzer haben Zutritt zu diesem Loginsystem.
 * @author Dominik K
 * @author Steffen G
 */
@Entity
public class Nutzer implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * Benutzername des Nutzers
     */
    @Id
    @Length(min=1, max=50, message="Validation: Der Username muss zwischen 1 und 50 Zeichen besitzen")
    private String username;
    /**
     * Passwort bzw. MD5 des Passworts des Benutzers
     */
    @Column
    @Length(min=1, max=50, message="Validation: Das Passwort muss zwischen 1 und 50 Zeichen besitzen")
    private String password;

    
    /**
     * Liefert den Usernamen
     * @return der Username
     */
    public String getUsername() {
        return username;
    }

    /**
     * Setzt einen neuen Usernamen
     * @param username neuer Name
     */
    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (username != null ? username.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Nutzer)) {
            return false;
        }
        Nutzer other = (Nutzer) object;
        if ((this.username == null && other.username != null) || (this.username != null && !this.username.equals(other.username))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "entity.Nutzer[ username=" + username + " ]";
    }

    /**
     * Liefert das Passwort, bzw. den MD5 Hash des Passworts
     * @return Passwort bzw. Hash
     */
    public String getPassword() {
        return password;
    }

    /**
     * Setzt ein neues Passwort bzw. den MD5 Hash
     * @param password Neues Passwort bzw. Hash
     */
    public void setPassword(String password) {
        this.password = password;
    }
    
}
